package espacokidsadm.teste;

import java.util.Date;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.persistence.TypedQuery;

import espacokidsadm.modelo.dao.impl.AlunoDAO;
import espacokidsadm.modelo.entity.Aluno;
import espacokidsadm.modelo.entity.Auditoria;
import espacokidsadm.modelo.entity.Pessoa;
import espacokidsadm.modelo.entity.Responsavel;
import espacokidsadm.modelo.entity.ResponsavelPK;
import espacokidsadm.modelo.entity.Turma;
import espacokidsadm.modelo.entity.Usuario;
import espacokidsadm.modelo.negocio.AlunoRN;
import espacokidsadm.modelo.negocio.PessoaRN;
import espacokidsadm.modelo.negocio.ResponsavelRN;
import espacokidsadm.modelo.type.TipoResponsabilidade;

public class AlunoTeste {

	/**
	 * @param args
	 */
	
	public static EntityManager manager;
	
	public static void main(String[] args) {
/*
		EntityManager manager =    Persistence.createEntityManagerFactory("espacokidsadm_teste").createEntityManager();
		manager.getTransaction().begin();
		
		Usuario usuario = manager.find(Usuario.class, 1);
		
		
		Pessoa pessoa = new Pessoa();
		pessoa.setNome("MARCIO");
		
		manager.persist(pessoa);
		
		Aluno aluno = AlunoRN.criarNovoAluno(pessoa);
		aluno.setAuditoria(new Auditoria());
		aluno.getAuditoria().setDataAlteracao(new Date());
		aluno.getAuditoria().setDataCadastro(new Date());
		aluno.getAuditoria().setUsuarioAlteracao(usuario);
		aluno.getAuditoria().setUsuarioCadastro(usuario);
		
		Pessoa pessoa2 = new Pessoa();
		pessoa2.setNome("Paia aluno");
		pessoa2.setCpf("61287184502");
		
		manager.persist(pessoa2);
		
		ResponsavelPK responsavelPK = new ResponsavelPK(pessoa2, TipoResponsabilidade.PAI);
		Responsavel responsavel = new Responsavel();
		responsavel.setId(responsavelPK);
		
		responsavel.setAuditoria(new Auditoria());
		responsavel.getAuditoria().setDataAlteracao(new Date());
		responsavel.getAuditoria().setDataCadastro(new Date());
		responsavel.getAuditoria().setUsuarioAlteracao(usuario);
		responsavel.getAuditoria().setUsuarioCadastro(usuario);
		
		
		
		aluno.adicionarResponsavel(responsavel);
		
		manager.persist(responsavel);
		
		manager.persist(aluno);
		
		manager.getTransaction().commit();
		
		manager.close();
		
		System.out.println("FIM");*/
		
		
		/*
		manager =    Persistence.createEntityManagerFactory("espacokidsadm_teste").createEntityManager();
		manager.getTransaction().begin();
		
		Usuario usuario = manager.find(Usuario.class, 1);
		
		
		Pessoa pessoa = PessoaRN.criarNovaPessoa();
		pessoa.setNome("MARCIO");
		
		manager.persist(pessoa);
		
		Aluno aluno = AlunoRN.criarNovoAluno();
		aluno.setPessoa(pessoa);
		aluno.setTurma(manager.find(Turma.class, 1));
		aluno.setAuditoria(new Auditoria());
		aluno.getAuditoria().setDataAlteracao(new Date());
		aluno.getAuditoria().setDataCadastro(new Date());
		aluno.getAuditoria().setUsuarioAlteracao(usuario);
		aluno.getAuditoria().setUsuarioCadastro(usuario);
		
		Pessoa pessoa2 = new Pessoa();
		pessoa2.setNome("ZE DAS COVES");
		pessoa2.setCpf("20510631177");
		
		manager.persist(pessoa2);
		
		Responsavel responsavel = ResponsavelRN.criarNovoResponsavelAluno();
		responsavel.setPessoa(pessoa2);
		responsavel.setTipoResponsabeilidade(TipoResponsabilidade.PAI);
		
		responsavel.setAuditoria(new Auditoria());
		responsavel.getAuditoria().setDataAlteracao(new Date());
		responsavel.getAuditoria().setDataCadastro(new Date());
		responsavel.getAuditoria().setUsuarioAlteracao(usuario);
		responsavel.getAuditoria().setUsuarioCadastro(usuario);
		
		
		aluno.adicionarResponsavel(responsavel);
		
		
		manager.persist(aluno);
		
		manager.getTransaction().commit();
		
		manager.close();
		
		System.out.println("FIM");
		*/
		
		
		manager =    Persistence.createEntityManagerFactory("espacokidsadm_teste").createEntityManager();
		
		
		TypedQuery<Aluno> query = manager.createQuery("from Aluno aluno order by aluno.pessoa.nome", Aluno.class);
		
		List<Aluno> alunos = query.getResultList();
		
		
		
		manager.close();
		
		System.out.println("FIM");
	}

}
